package com.jvyou.common.enums.result;

import lombok.Getter;

@Getter
public enum HttpCodeEnum {
    // 成功
    SUCCESS(2000, "操作成功", ErrorShowType.NOTIFICATION),
    SYSTEM_ERROR(5000, "系统出错,请联系管理员反馈问题", ErrorShowType.NOTIFICATION),
    DATA_SERVER_CONNECT_ERROR(5001, "数据服务器连接异常，请联系管理员启动服务器", ErrorShowType.NOTIFICATION),
    UNKNOWN_ERROR(4000, "未知错误，请联系管理员反馈问题", ErrorShowType.NOTIFICATION),
    CLIENT_ERROR(4000, "客户端异常", ErrorShowType.NOTIFICATION),
    ARGUMENT_VALID_ERROR(4000, "参数校验异常", ErrorShowType.NOTIFICATION),
    BAD_REQUEST(4000, "请求参数有误", ErrorShowType.NOTIFICATION),
    // 权限认证 400x
    REQUIRE_TOKEN(4001, "尚未登录，请登录后操作", ErrorShowType.NOTIFICATION),
    NO_OPERATOR_AUTH(4003, "无操作权限", ErrorShowType.NOTIFICATION),
    LOGIN_OUT_TIME(4001, "登录超时", ErrorShowType.NOTIFICATION),
    USER_NOT_EXIST(4004, "用户不存在", ErrorShowType.NOTIFICATION),
    PASSWORD_NOT_RIGHT(4005, "密码错误", ErrorShowType.NOTIFICATION),
    USER_LOCKED(4006, "用户被锁定", ErrorShowType.ERROR_MESSAGE),
    WECHAT_LOGIN_FILE(4006, "微信登录失败", ErrorShowType.NOTIFICATION),
    // Action  401x
    ADD_FAIL(4011, "添加失败", ErrorShowType.ERROR_MESSAGE),
    DELETE_FAIL(4012, "删除失败", ErrorShowType.ERROR_MESSAGE),
    UPDATE_FAIL(4013, "更新失败", ErrorShowType.ERROR_MESSAGE),
    DATA_NOT_EXIST(4014, "数据不存在", ErrorShowType.ERROR_MESSAGE),
    DETAIL_FAIL(4015, "详情查询失败", ErrorShowType.ERROR_MESSAGE),
    DATA_EXIST(4016, "数据已存在", ErrorShowType.ERROR_MESSAGE),
    // 验证码 402x
    SMS_LIMIT(4020, "验证码请求过于频繁，60秒后再试", ErrorShowType.ERROR_MESSAGE),
    SMS_CODE_EXPIRE(4021, "验证码不存在，请重新发送验证码", ErrorShowType.ERROR_MESSAGE),
    SMS_CODE_ERROR(4022, "验证码错误", ErrorShowType.ERROR_MESSAGE),
    SMS_OP_TOKEN_EXPIRE(4023, "验证码超时", ErrorShowType.ERROR_MESSAGE),
    SMS_OP_TOKEN_ERROR(4024, "Token 验证失败", ErrorShowType.ERROR_MESSAGE),
    SMS_SEND_FAIL(4025, "短信验证码发送失败", ErrorShowType.ERROR_MESSAGE),
    SMS_TEMPLATE_NOT_EXIST(4026, "短信验证码模板不存在", ErrorShowType.ERROR_MESSAGE),
    // 支付 403x
    PAY_ORDER_NOT_EXIST(4030, "订单不存在", ErrorShowType.ERROR_MESSAGE),
    PAY_ORDER_CREATE_FAIL(4031, "创建订单失败", ErrorShowType.ERROR_MESSAGE),
    PAY_ORDER_PAID(4032, "订单已支付", ErrorShowType.ERROR_MESSAGE),
    PAY_ORDER_PAY_FAIL(4033, "订单支付失败", ErrorShowType.ERROR_MESSAGE),
    PAY_ORDER_PAY_CANCEL(4034, "订单已取消", ErrorShowType.ERROR_MESSAGE),
    BALANCE_NOT_ENOUGH(4035, "余额不足", ErrorShowType.ERROR_MESSAGE),

    // 定时任务 404x
    TASK_EXCEPTION(4041, "定时任务异常", ErrorShowType.ERROR_MESSAGE),

    // 文件 405x
    FILE_PARSE_FAIL(4050, "文件解析异常，获取不到文件类型或者原始名称", ErrorShowType.ERROR_MESSAGE),
    FILE_EMPTY(4051, "上传的文件不能为空", ErrorShowType.ERROR_MESSAGE),
    FILE_SIZE_ERROR(4052, "上传的文件不能超过20MB", ErrorShowType.ERROR_MESSAGE),

    // 其他 49xx
    DEFAULT_VALUE_EXIST(4901, "该字典类型已存在默认值，请取消原默认值再重试", ErrorShowType.ERROR_MESSAGE);

    final int code;
    final String msg;
    final ErrorShowType showType;

    HttpCodeEnum(int code, String errorMessage, ErrorShowType showType) {
        this.code = code;
        this.msg = errorMessage;
        this.showType = showType;
    }

}